//
// Created by ASUS on 2024/4/15/0015.
//
#include <bits/stdc++.h>
using namespace std;
struct Node{
	unordered_map<char,Node*> son;
	int cnt=0;
};

class Trie{
	Node*root;
public:
	Trie(){
		root=new Node();
	}
	void insert(string s){
		auto cur=root;
		int n=s.length();
		for(int i=0;i<n;i++){
			if(cur->son.find(s[i])==cur->son.end()){
				cur->son[s[i]]=new Node();
			}
			cur=cur->son[s[i]];
			cur->cnt++;
		}
	}

	int find(string s){
		int n=s.length();
		auto cur=root;
		for(int i=0;i<n;i++){
			if(cur->son.find(s[i])==cur->son.end()) return 0;
			cur=cur->son[s[i]];
		}
		return cur->cnt;
	}
};
int main(){
	Trie trie;
	int n;cin>>n;
	for(int i=1;i<=n;i++){
		trie.insert(to_string(i));
	}
	return 0;
}